<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    
</head>
<body>
    
    <script>
        /*
            简单数据类型
            Number 
            String 
            Boolean
            undefined

            栈   简单数据类型存放在栈里面，所有简单类型的变量都存放在栈里面(包括全局变量，局部变量)

            堆   复杂数据类型的数据  存放堆里面  但在栈里面有一个堆的地址

            简单数据类型赋值的时候是复制的值，复制类型赋值复制的是地址

        */
        //字符串也可以封装成对象
         var str='abcd'
         str.substr()  //调用对象的方法
         //实际上
         var temp=new String('abcd')
         temp.substr(1,4)
         temp=null
         console.log(typeof temp);


        //布尔型也可以封装成对象
        var bool=true;
        bool=new Boolean(true);
        console.log(bool.toString());
        console.log(typeof bool);

        var num=500.235;
        console.log(num.toFixed(2));  //保留小数个个数方法
        console.log(typeof null);   //null的类型

        //数据的引用
        //字符串赋值
        var name1='trump'
        var name2=name1;  
            name1='diben'
        console.log('name1==>:'+name1+'-----'+'name2==>:'+name2);
        //数组赋值
        var arr=[10,20,30]
        var arr2=arr    //对象赋值  赋值不是复制一份内容给arr2， 而是把arr里面的地址赋值给arr2
            arr[1]=100
            console.log('arr=>'+arr+'--'+'arr2==>'+arr2);


        //对象传递
        var person1={
            name:'trump',
            age:76
        }
        var person2=person1
            person2.name='biden';
            console.log('p1==>'+person1.name,'p2==>'+person2.name);

        //函数传递
        var car1={
            logo:'奔驰'
        }
        function drive(car)
        {
            console.log('改变之前',car.logo);
            car.logo='宝马'
            console.log('改变之后',car.logo);
        }
        drive(car1)
        console.log('函数外部调用logo==>',car1.logo);
    </script>
    
</body>
</html>